package com.example.spring_aop.execution;

/**
 * @className: ExecutionDemo
 * @author: 芃
 * @description: 切点表达式
 * @date: 2024/12/30 13:46
 */
public class ExecutionDemo {

    /*
     * 切点表达式常见的有两种表达方式
     * 1、execution(.....)：根据方法的签名来匹配
     * 2、@annotation(......):根据注解来匹配
     */

    /*
     * 1、execution(......)
     * 格式：execution(<访问修饰符><返回类型><包名.类名.方法(方法参数)><异常>)
     * ①、*：匹配任意字符，只匹配一个元素（包含类型、包名、类名、方法名、参数类型）
     * a.包名使用*表示任意包
     * b.类名使用*表示任意类
     * c.方法名使用*表示任意方法
     * d.参数列表使用*表示任意类型的参数
     * e.返回值使用*表示任意类型的返回值
     * ②、.. :匹配多个连续的任意符号，可以统配任意层级的包，或任意类型，任意个数的参数
     * a.使用..配置包名，标识此包以及此包下的所有子包
     * b.可以使用..配置参数，任意个任意类型的参数
     * 例如：execution(* com.example.spring_aop.execution.*.*(..)) ->此处省略掉访问修饰符
     */


    /*
     * 2、@annotation(......) ->自定义注解匹配
     * 步骤：
     * a.编写自定义注解
     * b.使用@annotation表达式来描述切点
     * c.在连接点的方法上添加自定义注解
     */

}
